package org.jeecg.config.props;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.constant.enums.SftpOS;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * sftp 配置
 * @author: qiang.zhou
 * @date: 2024/9/5 9:44
 **/
@Data
@Component
@ConfigurationProperties(prefix = "sftp")
public class SftpConfig {

    private Map<String, Config> config = new HashMap<>();

    public Config getTenderSftpConfig() {
        return config.get(SftpOS.TENDER.getCode());
    }

    @Data
    public static class Config {
        /** sftp主机地址 */
        private String host;

        /** sftp用户名 */
        private String username;

        /** sftp密码 */
        private String password;

        /** sftp端口 */
        private String port;

        /** 存放在sftp上的文件根目录, 只能是相对路径 */
        private String sftpRoot;

        /** 失败后重连次数; 实际重试次数为设置的值+1 */
        private int retry = 2;

        /** sftp session额外参数 */
        private Map<String, String> sessionConfig = new HashMap<>();


        public void setSftpRoot(String sftpRoot) {
            if (StringUtils.isBlank(sftpRoot)) {
                this.sftpRoot = sftpRoot;
            }

            // 检查最后是否是"/"
            sftpRoot = sftpRoot.trim();

            if (sftpRoot.endsWith(SymbolConstant.SINGLE_SLASH)) {
                this.sftpRoot = sftpRoot;
            } else {
                this.sftpRoot = sftpRoot + SymbolConstant.SINGLE_SLASH;
            }
        }
    }


}
